// utils/express-zh.js
const express = require('express')

function 创建应用() {
  const app = express()

  // ===== 仅映射函数方法 =====
  const 应用方法映射 = {
    监听: 'listen',
    设置: 'set',
    获取设置: 'get',
    启用: 'enable',
    禁用: 'disable',
    使用: 'use',
    引擎: 'engine',
    参数: 'param'
  }

  const 路由方法映射 = {
    路由: 'route',
    全部: 'all',
    获取: 'get',
    提交: 'post',
    更新: 'put',
    删除: 'delete',
    修补: 'patch',
    选项: 'options',
    头信息: 'head'
  }

  // 安全绑定方法
  Object.entries({ ...应用方法映射, ...路由方法映射 }).forEach(([zh, en]) => {
    if (app[en] && typeof app[en] === 'function') {
      app[zh] = app[en].bind(app)
    }
  })

  // ===== 特殊处理属性 =====
  app.静态资源 = express.static

  // ===== 请求/响应扩展 =====
  app.使用((req, res, next) => {
    // 请求扩展
    Object.assign(req, {
      参数: req.params,
      查询: req.query,
      主体: req.body,
      获取头: req.get.bind(req),
      协议: req.protocol,
      路径: req.path
    })

    // 响应扩展
    Object.assign(res, {
      状态: res.status.bind(res),
      发送: res.send.bind(res),
      渲染: res.render.bind(res),
      重定向: res.redirect.bind(res)
    })
    next()
  })

  return app
}

module.exports = { 创建应用 }
